const fetch = require("../../utils/fetch");

Page({
    /**
     * 页面的初始数据
     */
    data: {
        // 当前加载的分类
        category: {},
        // 此分类下的全部店铺
        shops: [],
        pageIndex: 0,
        pageSize: 20,
        hasMore: true,
        loading: false,
    },

    // 加载下一页数据
    loadMore() {
        if (!this.data.hasMore) return;

        let { pageIndex, pageSize, loading } = this.data;
        loading = !this.data.loading;
        this.setData({ loading });
        const params = { _page: ++pageIndex, _limit: pageSize };
        return fetch(`categories/${this.data.category.id}/shops`, params).then(
            (res) => {
                const totalCount = parseInt(res.header["X-Total-Count"]);
                const hasMore = pageIndex * pageSize < totalCount;
                const shops = this.data.shops.concat(res.data);
                loading = !this.data.loading;
                this.setData({ shops, pageIndex, hasMore, loading });
            }
        );
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        console.log(options);
        fetch(`categories/${options.cat}`).then((res) => {
            this.setData({ category: res.data });
            console.log(this.data.category);
            wx.setNavigationBarTitle({
                title: res.data.name,
            });

            // 加载完分类信息过后 再去加载商铺信息
            this.loadMore();
        });
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        //undefined 因为onReady先执行, 没有得到数据
        console.log(this.data.category.name);
        if (this.data.category.name) {
            // 如果获取到数据, 说明onReady后执行, 那么由它
            // 来设置
            wx.setNavigationBarTitle({
                title: res.data.name,
            });
        }
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {},

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {},

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {},

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {
        console.log("下拉刷新事件触发");
        // 重新加载数据
        this.setData({
            shops: [],
            pageIndex: 0,
            hasMore: true,
        });
        this.loadMore().then(() => {
            wx.stopPullDownRefresh();
        });
    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {
        // console.log("到底了");

        // 在这里加载下一页数据
        // 需要判断是否正在加载, 否则会有多次触发问题
        if (!this.data.loading) {
            this.loadMore();
        }
    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {},
});